home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / util / gnu / xpdf-0.8-src.lha / xpdf-0.8-src / ltk / LTKWidget.cc < prev    next >
C/C++ Source or Header  |  1998-11-28  |  3KB  |  116 lines

  1. //========================================================================
  2. //
  3. // LTKWidget.cc
  4. //
  5. // Widget base class.
  6. //
  7. // Copyright 1996 Derek B. Noonburg
  8. //
  9. //========================================================================
  10.  
  11. #ifdef __GNUC__
  12. #pragma implementation
  13. #endif
  14.  
  15. #include <stdlib.h>
  16. #include <stdarg.h>
  17. #include <stddef.h>
  18. #include <X11/Xlib.h>
  19. #include <X11/Xutil.h>
  20. #include "LTKApp.h"
  21. #include "LTKWindow.h"
  22. #include "LTKWidget.h"
  23.  
  24. LTKWidget::LTKWidget(char *name1, int widgetNum1) {
  25.   name = name1;
  26.   widgetNum = widgetNum1;
  27.   parent = NULL;
  28.   compParent = NULL;
  29.   x = 0;
  30.   y = 0;
  31.   width = 0;
  32.   height = 0;
  33.   btnPressCbk = NULL;
  34.   btnReleaseCbk = NULL;
  35.   mouseMoveCbk = NULL;
  36.   mouseDragCbk = NULL;
  37.   xwin = None;
  38.   mapped = gFalse;
  39.   next = NULL;
  40. }
  41.  
  42. LTKWidget::~LTKWidget() {
  43. }
  44.  
  45. void LTKWidget::setParent(LTKWindow *parent1) {
  46.   parent = parent1;
  47.   parent->addWidget(this);
  48. }
  49.  
  50. void LTKWidget::setCompoundParent(LTKWidget *compParent1) {
  51.   compParent = compParent1;
  52. }
  53.  
  54. long LTKWidget::getEventMask() {
  55.   long mask;
  56.  
  57.   mask = ExposureMask;
  58.   if (btnPressCbk)
  59.     mask |= ButtonPressMask | ButtonReleaseMask;
  60.   if (btnReleaseCbk)
  61.     mask |= ButtonReleaseMask;
  62.   if (mouseMoveCbk)
  63.     mask |= PointerMotionMask | PointerMotionHintMask;
  64.   if (mouseDragCbk)
  65.     mask |= ButtonMotionMask | PointerMotionHintMask;
  66.   return mask;
  67. }
  68.  
  69. void LTKWidget::layout2(int x1, int y1, int width1, int height1) {
  70.   x = x1;
  71.   y = y1;
  72.   width = width1;
  73.   height = height1;
  74. }
  75.  
  76. void LTKWidget::layout3() {
  77.   if (xwin == None) {
  78.     xwin = XCreateSimpleWindow(getDisplay(), parent->getXWindow(),
  79.                    x, y, width, height, 0,
  80.                    getFgColor(), getBgColor());
  81.     parent->getApp()->registerXWindow(xwin, parent, this);
  82.     XSelectInput(getDisplay(), xwin, getEventMask());
  83.   } else {
  84.     XMoveResizeWindow(getDisplay(), xwin, x, y, width, height);
  85.   }
  86. }
  87.  
  88. void LTKWidget::map() {
  89.   XMapWindow(getDisplay(), xwin);
  90.   mapped = gTrue;
  91. }
  92.  
  93. void LTKWidget::clear() {
  94.   XClearWindow(getDisplay(), xwin);
  95. }
  96.  
  97. void LTKWidget::buttonPress(int mx, int my, int button, GBool dblClick) {
  98.   if (btnPressCbk)
  99.     (*btnPressCbk)(this, widgetNum, mx, my, button, dblClick);
  100. }
  101.  
  102. void LTKWidget::buttonRelease(int mx, int my, int button, GBool click) {
  103.   if (btnReleaseCbk)
  104.     (*btnReleaseCbk)(this, widgetNum, mx, my, button, click);
  105. }
  106.  
  107. void LTKWidget::mouseMove(int mx, int my, int btn) {
  108.   if (btn == 0) {
  109.     if (mouseMoveCbk)
  110.       (*mouseMoveCbk)(this, widgetNum, mx, my);
  111.   } else {
  112.     if (mouseDragCbk)
  113.       (*mouseDragCbk)(this, widgetNum, mx, my, btn);
  114.   }
  115. }
  116.